from apis_study.studb import StuDB
from apis_study.student import Student


def run():
    print("============ 欢迎进入博为峰学员管理系统 ================")
    while True:
        try:
            # 接收用户输入指令
            op = int(input("请输入指令(1:新增 2:查询 3:修改 4:删除 5:全部 100:退出): "))
        except ValueError:
            # 输入的不是数字
            print("请输入正确的数字指令")
            continue

        if op == 1:
            # 新增学员
            stu_id = input("请输入学员id：")
            name = input("请输入学员姓名：")
            phone = input("请输入手机号：")
            wx = input("请输入微信号：")
            qq = input("请输入QQ号：")
            gender = input("请输入性别：")
            print(StuDB.add_stu(stu_id, name, phone, wx, qq, gender))

        elif op == 2:
            # 查询学员
            stu_id = input("请输入要查询的学员id：")
            stu = StuDB.select_stu(stu_id)
            # 如果返回的是Student对象，就显示字典；否则是字符串提示
            print(stu.to_dict() if isinstance(stu, Student) else stu)

        elif op == 3:
            # 修改学员信息
            stu_id = input("请输入要修改的学员id：")
            info = input("请输入修改信息(格式如 name:张三,phone:123456): ")
            info_dict = {}
            try:
                for item in info.split(','):
                    # 拆分每一个键值对
                    key, val = item.split(':')
                    info_dict[key.strip()] = val.strip()
                print(StuDB.change_stu(stu_id, **info_dict))
            except Exception:
                print("修改信息格式错误，请使用 key:value,key:value 格式")

        elif op == 4:
            # 删除学员
            stu_id = input("请输入要删除的学员id：")
            print(StuDB.del_stu(stu_id))

        elif op == 5:
            # 查看所有学员
            all_stu = StuDB.all_students()
            if not all_stu:
                print("暂无学员信息")
            for stu in all_stu:
                print(stu)  # 会调用 __str__ 展示美观格式

        elif op == 100:
            print("退出系统")
            break

        else:
            print("无效指令，请重新输入")

if __name__ == '__main__':
    run()